热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

篇幅|也就是_[PublishAARToMaven]使用Gradle发布AAR到Maven仓库

篇首语:本文由编程笔记#小编为大家整理,主要介绍了[PublishAARToMaven]使用Gradle发布AAR到Maven仓库相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了[Publish AAR To Maven] 使用 Gradle 发布 AAR 到 Maven 仓库相关的知识,希望对你有一定的参考价值。


========================================================
作者:qiujuer
博客:blog.csdn.net/qiujuer
网站:www.qiujuer.net
开源库:github.com/qiujuer/Genius-Android
转载请注明出处:http://blog.csdn.net/qiujuer/article/details/44195131
——学之开源,用于开源;初学者的心态,与君共勉!

========================================================

有一个好的库想与世界的伙伴分享,于是共享到GitHub上,于是有人看到了,但是要使用却发现配置非常难。但是发现别人的库只需要一行代码却能使用;于是我想知道为什么能这么简单。
在这篇文章中将带你了解如何发布你的库到远程仓库Maven中,又如何使用。


准备

开始之前我们有一定的准备工作,如果准备好了那么后面将会非常顺畅。


  • 注册 https://issues.sonatype.org 账户,并创建你的 Group Id
  • 学会GPGTools的使用,并生成你的密钥对;见:使用GPG对文件进行签名加密
  • 编写你的库,并准备好发布,工具:Android-Studio
  • 添加发布Maven的Gradle文件
  • 添加你的个人信息,如你的发布地址、库版本信息等
  • 开发发布快照、以及正式版本,审核

开始

前面的两项工作由于篇幅较大,单独开篇了,欢迎大家去看~~,我们从第三的地方开始。


编写Lib

编写库,这里我采用的是android-Studio;至于其使用建立过程以及简单使用大家可见:环境配置之正式版Android Studio 1.0

在这里我使用 Genius-Android 开源库进行演示。

在本次项目中我们尝试发布 UI 部分,图中圈起来部分为我们需要的文件。


编写发布文件

发布文件就是其中的 maven_push.gradle 。由于代码较长就不贴代码了,大家可以去GitHub上查看。

代码已经发布到 BeFoot 开源项目中.
该代码运行在 Gradle 中,作用是按照配置进行打包代码文件,然后签名文件,最后发布你的文件到仓库。

在该代码中可以看见许多的方法与参数,如:

def isReleaseBuild()
return VERSION_NAME.contains("SNAPSHOT") == false

这个方法的作用是判断版本名称是否含有 “SNAPSHOT”字段,也就是判断当前是否发布的是快照版本,以便传输到不同的服务器地址。
但是其中的 “VERSION_NAME” 哪里来的呢?往下看~~


gradle.properties

“maven_push” 文件中所有的字段都是访问的你的 “gradle.properties” 文件。

可以看见我们的项目中有两个这样的文件,两个文件中的内容都可以全部写到一个文件中。之所以写出两个,下面那个代表的是本项目中的全局变量,至于 UILib 中的那个则只局限于 UILib 中使用。

现在我们分别打开看看,首先打开下面那个全局的文件。

在这里我们需要更改的地方有如下几个地方:

再来看看库中的文件:



这里相对简单的多了,无非就是名称,ID,类型,版本等信息。
有必要说明的是,上面的POM_GROUP_ID+POM_ARTIFACT_ID+VERSION_NAME 将会得到如下的使用方式:


dependencies
compile 'com.github.qiujuer:genius-ui:3.0.0-SNAPSHOT'

完了?没~还有一个至关重要的地方,在”Maven_Push”的代码中我们会找到:

以及其中的 signing 部分,但是你会发现你找遍了上面的所有的文件都没有发现这些字段,那么这些字段在哪里呢?

很简单,在Android-Studio 缓存文件夹配置 中有讲解“.gradle”目录对吧?那么现在我们去看看 这个目录中有什么。

可以看见其中也有一个 “gradle.properties”文件,这个文件不在项目中,但是在项目中却可以访问,这是一个全局的文件,任何项目都可以访问该文件,如果你没有,那么可以自己创建一个就OK。



为什么要存储到这里?我们都知道项目中的 “gradle.properties” 文件一般来说都是会提交到 Git 上面去的,所以项目中的文件不应该包含私密的东西,比如密钥对,密钥密码,以及你的 Maven 的账户信息。


打开该文件我们能看见:


  • 密钥的相关东西请见:使用GPG对文件进行签名加密
  • Sonatype 用户名密码详见:注册 Maven 仓库 sonatype.org 账户

build.gradle

现在还需要修改你的项目中的 build 文件,需要更改的地方如下:

android
sourceSets
main
manifest.srcFile 'src/main/AndroidManifest.xml'
java.srcDirs = ['src/main/java']
res.srcDirs = ['src/main/res']


lintOptions
abortOnError false

apply from: 'https://raw.github.com/qiujuer/BeFoot/master/blog/gradle-mvn-push/gradle-mvn-push.gradle'

发布

如果你上面的都做到了,那么现在进入发布的地段了~~


执行发布命令

Android-Studio进入项目中,打开“Terminal”窗口,进入你的项目中,执行命令:

$ gradle clean build uploadArchives


第一次操作的时候将会下载一大堆的依赖。

最后出现成功提示则OK。


检查快照版本

在这里我们进入:https://oss.sonatype.org/content/groups/public/
找到你的项目地址,我本次的是:
https://oss.sonatype.org/content/groups/public/com/github/qiujuer/genius-ui/3.0.0-SNAPSHOT/

可以看出其中有着原始文件以及签名等验证文件。
如果你的没有“asc”文件,那么发布“Release”版本时将无法通过审核。

也不是说快照版本就无法使用,同样可以,其使用方式为:

dependencies
repositories
maven url "https://oss.sonatype.org/content/repositories/snapshots/"

compile 'com.github.qiujuer:genius-ui:3.0.0-SNAPSHOT'

如果发布了过个快照版本,那么就为:

compile 'com.github.qiujuer:genius-ui:3.0.0-SNAPSHOT-2'

发布“Release”

该发布方法操作命令行的方式与快照版本一样,完全一样;只需要更改你的库中的:gradle.properties 文件中的 VERSION_NAME ,删除掉后面的 “”-SNAPSHOT”“ 就OK。

之后执行命令行命令;然后你会发现你在:
https://oss.sonatype.org/content/groups/public/
中无法找到你发布的 “Release”版本;这是正常的;如果现在找到了反而不正常。


操作仓库发布

要完成“Release”版本的发布还需要登陆到后台中进行一些简单的操作。
网站:https://oss.sonatype.org/
登陆:用户名与密码与https://issues.sonatype.org/中的完全一样。
登陆成功后点击左边导航中的:“Staging Repositories”

在其中根据你的GroupId去找你对应的一行。比如我的Id:“com.github.qiujuer”那么就是:

找到后点击他,如果不是你的或者你没有找到那么看看是不是你上面根本就没有上传成功。

选中后点击上面的“Close”按钮,填写描述信息;然后等待一段时间;在这个过程中你可以点击刷新按钮。

在下面可以看见发送了邮件提醒,然后上面的 “Release” 按钮可以点击了,此时点击该按钮,填写描述信息,不必太多。然后等待;当下面同样出现发送了邮件提醒的时候那么恭喜你发布成功了。



如果在上面你上传的文件中没有签名文件那么将无法操作成功;此时你应该重新上传有签名的版本。


发布成功后你的使用方式为(你并不能立即就能使用,一般需要10分钟及其以上的时间):

dependencies
compile 'com.github.qiujuer:genius-ui:3.0.0'

附件

本次操作中需要的文件我都上传到 GitHub 上了。
地址:https://github.com/qiujuer/BeFoot/tree/master/blog/gradle-mvn-push


一些问题

该地方,暂时就不写了,太长了~~
说一个简单的吧:如果执行发布命令时出现:401 错误,代表你的账户登录失败,也就是你的账户名或者密码错误。

其他问题,大家如果遇到了可以提出来我会一一回答的。

==============追加===============


仓库唯一

发布项目到Maven 仓库 ,必须要使用sonatype.org么?sonatype.org是一个载体?还有其他选择?
答案是:有其他的选择~
如果 Gradle 没有内置你的仓库地址你也可以指定,甚至可以使用自己部署的服务器来发布。比如:

这个就是发布到 快照 仓库,但是快照仓库地址 Gradle 并不知道,所以需要指定。


一些题外话

说实话这篇文章,很早以前就想写了;但是大概想了一下感觉篇幅会比较大,所以一直没有写。

这次也是有朋友在问这方面的情况,所以就花了几天时间写了,真的是花了几天时间,不是空闲时间。也许你们看只需要10分钟,或许10分钟都要不到,可我却花了你的100倍甚至更多的时候来写的。

由于是使用的 MarkDown 编辑器(出现BUG意外死掉的情况少)写的,所以没有像以前一样加上高亮等操作,不是不加,而是编辑器还不支持。

========================================================
作者:qiujuer
博客:blog.csdn.net/qiujuer
网站:www.qiujuer.net
开源库:github.com/qiujuer/Genius-Android
转载请注明出处:http://blog.csdn.net/qiujuer/article/details/44195131
——学之开源,用于开源;初学者的心态,与君共勉!

========================================================


推荐阅读
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • 提升Python编程效率的十点建议
    本文介绍了提升Python编程效率的十点建议,包括不使用分号、选择合适的代码编辑器、遵循Python代码规范等。这些建议可以帮助开发者节省时间,提高编程效率。同时,还提供了相关参考链接供读者深入学习。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 本文介绍了三种方法来实现在Win7系统中显示桌面的快捷方式,包括使用任务栏快速启动栏、运行命令和自己创建快捷方式的方法。具体操作步骤详细说明,并提供了保存图标的路径,方便以后使用。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
author-avatar
帕格迪奥
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有